package com.brainhealth.customer.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.brainhealth.common.enums.PayStatus;
import com.brainhealth.common.enums.PayType;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.brainhealth.common.annotation.Excel;
import com.brainhealth.common.core.domain.BaseEntity;

/**
 * 会员训练订单对象 exercise_order
 * 
 * @author wolong
 * @date 2023-05-09
 */
public class ExerciseOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 训练订单表主键ID */
    private Long exerciseOrderId;

    /** 训练订单编码 */
    @Excel(name = "训练订单编码")
    private String orderId;

    /** 关联训练产品ID */
    @Excel(name = "关联训练产品ID")
    private Long exerciseProductId;

    /** 训练产品名称 */
    @Excel(name = "训练产品名称")
    private String exerciseName;

    /** 训练产品描述 */
    @Excel(name = "训练产品描述")
    private String exerciseDesc;

    /** 关联会员ID */
    @Excel(name = "关联会员ID")
    private Long customerId;

    /** 会员名称 */
    @Excel(name = "会员名称")
    private String customerName;

    /** 训练周期以次为单位 */
    @Excel(name = "训练周期以次为单位")
    private Long cycle;

    /** 会员手机号 */
    @Excel(name = "会员手机号")
    private String customerPhone;

    /** 订单金额 */
    @Excel(name = "订单金额")
    private BigDecimal amount;

    /** 订单实际支付金额 */
    @Excel(name = "订单实际支付金额")
    private BigDecimal payAmount;

    /** 交易流水号 */
    @Excel(name = "交易流水号")
    private String transactionNo;

    /**
     * 汇付支付宝跳转连接地址
     */
    private String payUrl;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /** 支付类型(0微信 1支付宝 2银行卡) */
    @Excel(name = "支付类型(0微信 1支付宝 2银行卡)")
    private PayType payType;

    /** 状态(0未支付 1已支付 2已退款 3已取消 4未完成 5已完成) */
    @Excel(name = "状态(0未支付 1已支付 2已退款 3已取消 4未完成 5已完成)")
    private PayStatus status;

    public void setExerciseOrderId(Long exerciseOrderId) 
    {
        this.exerciseOrderId = exerciseOrderId;
    }

    public Long getExerciseOrderId() 
    {
        return exerciseOrderId;
    }
    public void setOrderId(String orderId) 
    {
        this.orderId = orderId;
    }

    public String getOrderId() 
    {
        return orderId;
    }
    public void setExerciseProductId(Long exerciseProductId) 
    {
        this.exerciseProductId = exerciseProductId;
    }

    public Long getExerciseProductId() 
    {
        return exerciseProductId;
    }
    public void setExerciseName(String exerciseName) 
    {
        this.exerciseName = exerciseName;
    }

    public String getExerciseName() 
    {
        return exerciseName;
    }
    public void setExerciseDesc(String exerciseDesc) 
    {
        this.exerciseDesc = exerciseDesc;
    }

    public String getExerciseDesc() 
    {
        return exerciseDesc;
    }
    public void setCustomerId(Long customerId) 
    {
        this.customerId = customerId;
    }

    public Long getCustomerId() 
    {
        return customerId;
    }
    public void setCustomerName(String customerName) 
    {
        this.customerName = customerName;
    }

    public String getCustomerName() 
    {
        return customerName;
    }
    public void setCycle(Long cycle) 
    {
        this.cycle = cycle;
    }

    public Long getCycle() 
    {
        return cycle;
    }
    public void setCustomerPhone(String customerPhone) 
    {
        this.customerPhone = customerPhone;
    }

    public String getCustomerPhone() 
    {
        return customerPhone;
    }

    public BigDecimal getAmount()
    {
        return amount;
    }

    public void setAmount(BigDecimal amount)
    {
        this.amount = amount;
    }

    public BigDecimal getPayAmount()
    {
        return payAmount;
    }

    public void setPayAmount(BigDecimal payAmount)
    {
        this.payAmount = payAmount;
    }

    public String getPayUrl()
    {
        return payUrl;
    }

    public void setPayUrl(String payUrl)
    {
        this.payUrl = payUrl;
    }

    public void setTransactionNo(String transactionNo)
    {
        this.transactionNo = transactionNo;
    }

    public String getTransactionNo() 
    {
        return transactionNo;
    }
    public void setPayTime(Date payTime) 
    {
        this.payTime = payTime;
    }

    public Date getPayTime() 
    {
        return payTime;
    }

    public PayType getPayType()
    {
        return payType;
    }

    public void setPayType(PayType payType)
    {
        this.payType = payType;
    }

    public PayStatus getStatus()
    {
        return status;
    }

    public void setStatus(PayStatus status)
    {
        this.status = status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("exerciseOrderId", getExerciseOrderId())
            .append("orderId", getOrderId())
            .append("exerciseProductId", getExerciseProductId())
            .append("exerciseName", getExerciseName())
            .append("exerciseDesc", getExerciseDesc())
            .append("customerId", getCustomerId())
            .append("customerName", getCustomerName())
            .append("cycle", getCycle())
            .append("customerPhone", getCustomerPhone())
            .append("amount", getAmount())
            .append("payAmount", getPayAmount())
            .append("transactionNo", getTransactionNo())
            .append("payTime", getPayTime())
            .append("payType", getPayType())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
